<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>ESP8266 ILI9341 display support code with printf sources, wire-frame viewer and custom fonts: index page</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">ESP8266 ILI9341 display support code with printf sources, wire-frame viewer and custom fonts
   &#160;<span id="projectnumber">1.0</span>
   </div>
   <div id="projectbrief">ESP8266ILI9341DisplayProject</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">index page </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="README"></a>
README</h1>
<dl class="section user"><dt>Documentation</dt><dd><ul>
<li>Please use this link for Documentation and this README </li>
</ul>
</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a href="https://rawgit.com/magore/esp8266_ili9341/master/doxygen/html/index.html">https://rawgit.com/magore/esp8266_ili9341/master/doxygen/html/index.html</a> </dd></dl>
<dl class="section user"><dt>Copyright</dt><dd><ul>
<li>See <a class="el" href="md_COPYRIGHT.html">COPYRIGHT.md</a> for a full copyright notice for the project </li>
</ul>
</dd></dl>
<dl class="section user"><dt>Description</dt><dd><ul>
<li>ESP8266 support libraries<ul>
<li>All of the code in this project, except where noted is written by me</li>
<li>Analog Devices ADF4351 Wideband Synthesizer driver and test code<ul>
<li>Control is via serial terminal that works while the other demos run</li>
<li>adf4351 123456000 10000<ul>
<li>Frequency, and channel spacing used in calculations</li>
</ul>
</li>
<li>adf4351_scan 144e6 145e6 10000<ul>
<li>start frequency, end frequency, channel spacing</li>
</ul>
</li>
</ul>
</li>
<li>ILI9341 display driver<ul>
<li>Multiple custom size windows</li>
<li>Custom fonts</li>
<li>Window scrolling</li>
<li>readPixel() function supported</li>
<li>The specific display this was tested on is a TM022HDH26 display I got from eBay.</li>
<li>Not limited by ILI9341 hardware scroll restrictions.</li>
</ul>
</li>
<li>xpt2046 touch controller<ul>
<li>filtered read of XY</li>
<li>debounced key press read of queued events</li>
<li>5 point calibration routines</li>
</ul>
</li>
<li>BDF FONT compiler tools and fonts sets<ul>
<li>Tools to creates C code used in the display drivers</li>
</ul>
</li>
<li>Wireframe Viewer<ul>
<li>Code generator for Earth coastline data</li>
<li>I created two wireframe demos<ul>
<li>Cube wireframe dataset</li>
<li>Earth coastline dataset - wireframe view still needs hidden line removal option</li>
</ul>
</li>
</ul>
</li>
<li>CORDIC C code generator and 3D transformation code support functions use by wireframe viewer code</li>
<li>Small PRINTF with full floating point support - much smaller then GNU full version along</li>
<li>Additional number IO functions, ATOF etc</li>
<li>WEB server using SD CARD with CGI processing - files and CGI results can be ANY SIZE!<ul>
<li>Example web site for testing</li>
<li>WEB server can update TFT display<ul>
<li>Simple door sign status update using web page - see html/msg.cgi and <a class="el" href="web_8c.html" title="Small web server for esp8266. ">web/web.c</a> for code</li>
</ul>
</li>
</ul>
</li>
<li>Network server client example for display updates</li>
<li>Uart network server client for serial uart to Network Bridge.</li>
<li>Generic queue handling code</li>
<li>ESP8266 support for FatFS by ChaN 2016<ul>
<li>SD card and microSD support</li>
</ul>
</li>
<li>POSIX wrappers for FatFS - provides UNIX/LINUX file I/O operations</li>
<li>POSIX time functions and RTC set with NTP</li>
<li>Multiple timers used by RTC and time functions</li>
<li>HSPI code that can handle multiple devices each with varying clock frequencies</li>
</ul>
</li>
</ul>
</dd></dl>
<dl class="section user"><dt>Credits</dt><dd><ul>
<li>Project compiles using ESP Open SDK - or esp8266-devkit by CHERTS </li>
</ul>
</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a href="https://github.com/pfalcon/esp-open-sdk">https://github.com/pfalcon/esp-open-sdk</a> </dd>
<dd>
<a href="https://github.com/CHERTS/esp8266-devkit">https://github.com/CHERTS/esp8266-devkit</a><ul>
<li>Display drivers from third parties A few of the display driver functions are from the Adafruit GFX Library </li>
</ul>
</dd>
<dd>
<a href="https://github.com/adafruit/Adafruit-GFX-Library">https://github.com/adafruit/Adafruit-GFX-Library</a> Optimized Line drawing function and Makefile from CHERTS </dd>
<dd>
<a href="https://github.com/CHERTS/esp8266-devkit/tree/master/Espressif/examples/esp8266_ili9341">https://github.com/CHERTS/esp8266-devkit/tree/master/Espressif/examples/esp8266_ili9341</a><ul>
<li>Font sources: </li>
</ul>
</dd>
<dd>
<a href="https://www.gnu.org/software/freefont/">https://www.gnu.org/software/freefont/</a> </dd>
<dd>
<a href="https://www.rockbox.org">https://www.rockbox.org</a> </dd>
<dd>
<a href="http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html">http://www.cl.cam.ac.uk/~mgk25/ucs-fonts.html</a> </dd>
<dd>
<a href="http://en.wikipedia.org/wiki/Glyph_Bitmap_Distribution_Format">http://en.wikipedia.org/wiki/Glyph_Bitmap_Distribution_Format</a> </dd>
<dd>
<a href="https://partners.adobe.com/public/developer/en/font/5005.BDF_Spec.pdf">https://partners.adobe.com/public/developer/en/font/5005.BDF_Spec.pdf</a><ul>
<li>Vector <a class="el" href="bdffontutil_8h.html#a6d9c6f27190f0f04abf55678fe81080d">font</a> code  https: <a href="https://github.com/donbright/font_to_svg">https://github.com/donbright/font_to_svg</a></li>
<li>Vector fonts  <a href="https://www.gnu.org/software/freefont">https://www.gnu.org/software/freefont</a></li>
<li>FatFS code is by ChaN: </li>
</ul>
</dd>
<dd>
<a href="http://elm-chan.org/fsw/ff/00index_e.html">http://elm-chan.org/fsw/ff/00index_e.html</a><ul>
<li>Yield Code extracted from <a class="el" href="cpu_8h.html#af917fb5672b9339e228304f59f3b250a">ESP8266</a> Arduino Project </li>
</ul>
</dd>
<dd>
<a href="https://github.com/esp8266/Arduino">https://github.com/esp8266/Arduino</a> <hr/>
</dd></dl>
<dl class="section user"><dt>Directories</dt><dd><ul>
<li>Files<ul>
<li><a class="el" href="COPYRIGHT_8md.html">COPYRIGHT.md</a> - Project Copyright file</li>
<li>Doxyfile - Doxygen configuration file</li>
<li>display.jpg - image of the ili9341 display while the software is running</li>
<li>doit - bash script that compiles and uploads firmware then starts miniterm</li>
<li>doxyfile.inc - automatically created file lists directories to search for documentation</li>
<li>header - common include header that can be used by user C files</li>
<li>get_esp-open-sdk - shell script to download / compile and install the current version of ESP OPEN SDK<ul>
<li>This project is now using versions 2.0.0 of the SDK</li>
<li>Tested on Ubuntu 16.04.1 and Ubuntu 14.04.5</li>
<li>Installs under /opt/Expressif/esp-open-sdk</li>
</ul>
</li>
<li>get_esptool - downloads the latest version of esptool - required for this project</li>
<li>header - example C headers required for C programs in this project</li>
<li>Makefile from CHERTS modified for the project<ul>
<li>Features are all controlled by variables in Makefile</li>
<li>Note the Makefile downloads the latest esptool automatically so it is no longer includd here</li>
</ul>
</li>
<li>meminfo.sh - displays current RAM usage for the project<ul>
<li>Example: ./meminfo.sh build/demo.elf</li>
</ul>
</li>
<li>miniterm - shell script to launch terminal to 115200 baud Defaults to /dev/ttyUSB0 115200</li>
<li>README.md - Project readme file<ul>
<li>Tested with ESP8266_NONOS_SDK_V2.0.0_16_08_10, 1 Nov 2016</li>
</ul>
</li>
<li><a class="el" href="send_8c.html">send.c</a><ul>
<li>Send message to network server</li>
<li>Example: ./send -i 192.168.200.116 -m ''<ul>
<li>These escape characters are processed on the display: <br />
, , </li>
</ul>
</li>
</ul>
</li>
<li>setpath - set the current environment for the SDK and tools<ul>
<li>Example: . setpath</li>
</ul>
</li>
<li><a class="el" href="testflash_8c.html" title="Create or read a flash test pattern file - used for testing esp8266 flash. ">testflash.c</a><ul>
<li>Create and read a test pattern filled file for flash testing</li>
</ul>
</li>
<li>video.mp4<ul>
<li>Video of ili9341 display with web server CGI updating the display</li>
</ul>
</li>
</ul>
</li>
<li>Eclipse Project files and Directories<ul>
<li>Change .settings/language.settings.xml</li>
<li>.cproject</li>
<li>.project</li>
<li>.settings<ul>
<li>.settings/language.settings.xml<ul>
<li>Contains path to cross compiler for indexing - matches assumptions in SDK installer script: get_esp-open-sdk</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>Directories<ul>
<li>adf4351 - Analog Devices ADF4351 Wideband Synthesizer with Integrated VCO driver<ul>
<li>adf4351.c</li>
<li>adf4351.h<ul>
<li>Main ADF4351 interface code</li>
</ul>
</li>
<li>adf4351_cmd.c</li>
<li>adf4351_cmd.h<ul>
<li>User interface and frequency scanning task</li>
</ul>
</li>
<li>adf4351_hal.c</li>
<li>adf4351_hal.h<ul>
<li>Hardware Abstraction layer</li>
</ul>
</li>
</ul>
</li>
<li>bridge - Serial bridge code - send and receive serial data via network<ul>
<li>bridge.c</li>
<li>bridge.h<ul>
<li>Opens a port on port 23 so you can use telnet to test<ul>
<li>Note: at the moment no telnet command processing is done.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</dd></dl>
<ul>
<li>cordic - CORDIC function - a very fast method to do 2D/3D trig conversions<ul>
<li><a class="el" href="cordic_8c.html" title="Cordic Routines Handle angle outside of the first quadrant Added standalone test to verify CORDIC aga...">cordic.c</a></li>
<li><a class="el" href="cordic_8h.html" title="Cordic Routines Handle angle outside of the first quadrant Added standalone test to verify CORDIC aga...">cordic.h</a><ul>
<li>My 3D transformation functions are based on CORDIC and gradians/100</li>
<li>1 = 90degrees so the integer part reflects the quadrant</li>
</ul>
</li>
<li><a class="el" href="cordic2c__inc_8h.html">cordic2c_inc.h</a><ul>
<li>CORDIC lookup tables generated with my program cordic2c</li>
<li>1 = 90degrees so the integer part reflects the quadrant</li>
</ul>
</li>
<li>make_cordic<ul>
<li><a class="el" href="cordic2c_8c.html">cordic2c.c</a><ul>
<li>My customized CORDIC code, CORDIC table generating tools</li>
<li>Creates fixed point tables where 1 = 90degrees<ul>
<li>The integer part reflects the quadrant</li>
</ul>
</li>
<li>Based on work by P. Knoppers, 13-Apr-1992.</li>
</ul>
</li>
<li>Makefile<ul>
<li>Make and test CORDIC tables</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>display - My mostly rewritten ili9341 display driver with multiple window support and scrolling<ul>
<li>Depends on a few modified Adafruit functions under directory driver<ul>
<li><a class="el" href="font_8c.html" title="Font display for ili9341 driver Displays fonts generated by bdffont2c BDF to C code converter BDF = G...">font.c</a></li>
<li>font.h<ul>
<li>My Fixed and proportional font display code</li>
</ul>
</li>
<li><a class="el" href="fonts_8h.html">fonts.h</a><ul>
<li>Font data structures created via the BDF converter - see fonts directory</li>
</ul>
</li>
<li><a class="el" href="ili9341_8c.html" title="ili9341 driver inspired by Adafruit ili9341 code All code in this file has been rewritten by Mike Gor...">ili9341.c</a></li>
<li><a class="el" href="ili9341_8h.html" title="ili9341 driver inspired by Adafruit ili9341 code All code in this file has been rewritten by Mike Gor...">ili9341.h</a><ul>
<li>multiple window support</li>
<li>readPixel() works on most all 4 wire displays now</li>
<li>scrolling window support</li>
<li>Optimized line drawing function is from CHERTS<ul>
<li>Non optimized version is also supplied that I wrote in 1984</li>
</ul>
</li>
</ul>
</li>
<li><a class="el" href="ili9341__hal_8c.html" title="ili9341 driver inspired by Adafruit ili9341 code All code in this file has been rewritten by Mike Gor...">ili9341_hal.c</a></li>
<li>ili9341_hal.h<ul>
<li>Display hardware abstraction layer</li>
</ul>
</li>
<li><a class="el" href="tft__printf_8c.html">tft_printf.c</a></li>
<li><a class="el" href="tft__printf_8h.html" title="printf wrapper for ili9341 drivers ">tft_printf.h</a><ul>
<li>Printf interface to display library <a class="el" href="tft__printf_8c.html#ad6d6dda4facdc045d477c0cc9403e0c1" title="tft_printf function ">tft_printf()</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>docs - ili9431 and esp8266 related documents</p>
<ul>
<li>3rd_party - third party code<ul>
<li><a class="el" href="cal__dex_8c.html">cal_dex.c</a><ul>
<li>Debug exception support by cal (20150421, cal)</li>
</ul>
</li>
<li><a class="el" href="ili9341__adafruit_8c.html">ili9341_adafruit.c</a></li>
<li><a class="el" href="ili9341__adafruit_8h.html">ili9341_adafruit.h</a><ul>
<li>Adafruit display - just those remaining functions that I have not rewritten</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>earth - Earth coast line data and display code</p><ul>
<li>Still need to add hidden vector removal<ul>
<li>00README.txt<ul>
<li>Article on coordinate transforms from stackoverflow by Daphna Shezaf</li>
</ul>
</li>
<li><a class="el" href="earth2wireframe_8c.html" title="Convert Earth wireframe in Lon, Lat pairs into X,Y,Z integer fixed point Each group (a set of Lon...">earth2wireframe.c</a><ul>
<li>Create C structure wire-frame coastline data</li>
<li>This code could be easily adapted for any kind of wire-frame</li>
</ul>
</li>
<li>Makefile<ul>
<li><a class="el" href="earth__data_8h.html">earth_data.h</a> from Coastline LAT/LONG pairs</li>
</ul>
</li>
<li>data - Coastline data at various resolutions<ul>
<li>world.dat</li>
<li>world_10m.txt</li>
<li>world_110m.txt</li>
<li>world_50m.txt</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>esp8266 - ESP8266 specific code</p><ul>
<li>bits’</li>
<li>couch</li>
<li>Debugging printf wrapper<ul>
<li>debug’s</li>
<li>debug’s</li>
</ul>
</li>
<li>Flash read, Bittest functions, For systems requiring specific memory alignment access methods<ul>
<li><a class="el" href="flash_8c.html" title="Flash read and bit test utilities. ">flash.c</a></li>
<li><a class="el" href="flash_8h.html" title="Flash read and bit test utilities. ">flash.h</a></li>
</ul>
</li>
<li>My rewritten HPSI code that avoids unaligned read and writes (based on code ideas from CHERTS and Sem)<ul>
<li><a class="el" href="hspi_8c.html" title="HSPI driver for ESP8255 Based on initial work from Sem 2015 - rewrittem Added code to handle proper a...">hspi.c</a></li>
<li><a class="el" href="hspi_8h.html">hspi.h</a></li>
</ul>
</li>
<li>Chip select, addressing code and spi abstraction layer for all devices<ul>
<li><a class="el" href="hal_8c.html" title="HAL layer SPI, GPIO, address and chip select. ">hal.c</a></li>
<li><a class="el" href="hal_8h.html">hal.h</a></li>
</ul>
</li>
<li>RTC DS1307 code in progress<ul>
<li><a class="el" href="rtc_8c.html">rtc.c</a></li>
<li><a class="el" href="rtc_8h.html">rtc.h</a></li>
</ul>
</li>
<li>POSIX malloc, calloc, free wrappers and reset functions<ul>
<li><a class="el" href="system_8c.html" title="Memory and system utilities. ">system.c</a></li>
<li><a class="el" href="system_8h.html" title="System memory and reset utilities. ">system.h</a></li>
</ul>
</li>
<li>Serial I/O Interrupt driven receive and transmit code<ul>
<li><a class="el" href="uart_8c.html" title="Uart driver for ESP8266. ">uart.c</a></li>
<li><a class="el" href="uart_8h.html">uart.h</a></li>
<li>uart_register.h</li>
</ul>
</li>
</ul>
<p>fatfs - R0.12b FatFS code from (C)ChaN, 2016</p><ul>
<li>with minimal changes for ESP8266<ul>
<li>00history.txt</li>
<li>00readme.txt</li>
<li><a class="el" href="ff_8c.html">ff.c</a></li>
<li><a class="el" href="ff_8h.html">ff.h</a></li>
<li><a class="el" href="ffconf_8h.html">ffconf.h</a></li>
<li><a class="el" href="integer_8h.html">integer.h</a></li>
<li>option<ul>
<li><a class="el" href="cc932_8c.html">cc932.c</a></li>
<li><a class="el" href="cc936_8c.html">cc936.c</a></li>
<li><a class="el" href="cc949_8c.html">cc949.c</a></li>
<li><a class="el" href="cc950_8c.html">cc950.c</a></li>
<li><a class="el" href="ccsbcs_8c.html">ccsbcs.c</a></li>
<li><a class="el" href="syscall_8c.html">syscall.c</a></li>
<li><a class="el" href="unicode_8c.html">unicode.c</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<p>fatfs.hal - My updated FatFS hardware abstraction layer code for ESP8266</p><ul>
<li>Device layer<ul>
<li><a class="el" href="diskio_8c.html">diskio.c</a></li>
<li><a class="el" href="diskio_8h.html">diskio.h</a></li>
</ul>
</li>
<li>MMC Code for SD cards<ul>
<li><a class="el" href="mmc_8c.html">mmc.c</a></li>
<li><a class="el" href="mmc_8h.html">mmc.h</a></li>
</ul>
</li>
<li>MMC Hardware abstraction layer<ul>
<li><a class="el" href="mmc__hal_8c.html">mmc_hal.c</a></li>
<li><a class="el" href="mmc__hal_8h.html">mmc_hal.h</a></li>
</ul>
</li>
</ul>
<p>fatfs.sup - My POSIX wrappers for FatFS and user interface code</p><ul>
<li><a class="el" href="fatfs_8h.html">fatfs.h</a><ul>
<li>Master include file for all FatFS headers</li>
</ul>
</li>
<li>FatFS support functions<ul>
<li><a class="el" href="fatfs__sup_8c.html">fatfs_sup.c</a></li>
<li><a class="el" href="fatfs__sup_8h.html">fatfs_sup.h</a></li>
</ul>
</li>
<li>User tests and commands<ul>
<li>fatfs_utils.c</li>
<li>fatfs_utils.h</li>
</ul>
</li>
<li>My POSIX wrappers for fatfs<ul>
<li><a class="el" href="posix_8c.html" title="POSIX wrapper for FatFS. ">posix.c</a> - provides a POSIX interface for FatFS - Linux file I/O wrappers</li>
<li><a class="el" href="posix_8h.html" title="POSIX wrapper for FatFS. ">posix.h</a></li>
</ul>
</li>
</ul>
<p>fonts - BDF Font conversion code</p><ul>
<li><a class="el" href="bdffont2c_8c.html" title="BDF to C code converter Copyright © 2015 Mike Gore. ">bdffont2c.c</a><ul>
<li>Convert BDF fonts to C structures main program</li>
</ul>
</li>
<li><a class="el" href="bdffontutil_8c.html" title="BDF to C code converter Copyright © 2015 Mike Gore Displays fonts generated by bdffont2c BDF to C cod...">bdffontutil.c</a></li>
<li><a class="el" href="bdffontutil_8h.html" title="par BDF font utils for BDF to C code converter Displays fonts generated by bdffont2c BDF to C code co...">bdffontutil.h</a><ul>
<li>BDF fonts to C support code</li>
</ul>
</li>
<li><a class="el" href="bdfview_8c.html">bdfview.c</a><ul>
<li>ASCII previewer to test BDF display code</li>
</ul>
</li>
<li>font.h<ul>
<li>Font data structure definitions</li>
</ul>
</li>
<li><a class="el" href="fonts_8h.html">fonts.h</a><ul>
<li>Converted fonts as C structures</li>
</ul>
</li>
<li>Makefile<ul>
<li>Make file to build selected fonts into a C structure</li>
</ul>
</li>
<li>docs<ul>
<li>BDF font specs</li>
</ul>
</li>
<li>fixed<ul>
<li>ucs-fonts.tar.gz</li>
<li>Unicode versions of the X11 "misc-fixed-*" fonts</li>
<li>Markus Kuhn, etc</li>
</ul>
</li>
<li>fonts<ul>
<li>Rockbox Font Collection - www.rockbox.org</li>
<li>Reorganized into three directories<ul>
<li>C - constant size fonts</li>
<li>P - Proportional size fonts</li>
<li>O - Other</li>
</ul>
</li>
</ul>
</li>
<li>freefont<ul>
<li>Freefont fonts www.gnu.org/software/freefont</li>
</ul>
</li>
</ul>
<p>html - A working web site with files that can be put on an SD card</p><ul>
<li>Used for testing <a class="el" href="web_8c.html" title="Small web server for esp8266. ">web.c</a></li>
</ul>
<p>include</p><ul>
<li><a class="el" href="user__config_8h.html" title="Master include file for project Includes all project includes and defines here. ">user_config.h</a><ul>
<li>Master include and config header</li>
</ul>
</li>
<li><a class="el" href="spi__register_8h.html">spi_register.h</a><ul>
<li>From Expressif</li>
</ul>
</li>
<li>uart_register.h<ul>
<li>From Expressif</li>
</ul>
</li>
</ul>
<p>ld - Linker scripts</p>
<ul>
<li>lib - time, RTC and timer functions<ul>
<li>Matrix functions<ul>
<li>used for N point least squares screen calibration functions</li>
<li><a class="el" href="matrix_8c.html" title="matrix functions ">matrix.c</a></li>
<li><a class="el" href="matrix_8h.html" title="matrix functions ">matrix.h</a></li>
</ul>
</li>
<li>POSIX time functions<ul>
<li><a class="el" href="time_8h.html" title="Common Linux/POSIX time functions. ">time.h</a></li>
<li><a class="el" href="time_8c.html" title="Common Linux/POSIX time functions. ">time.c</a></li>
</ul>
</li>
<li>Simple timers and tasks<ul>
<li><a class="el" href="timer_8h.html" title="timer functions ">timer.h</a></li>
<li><a class="el" href="timer_8c.html" title="timer functions ">timer.c</a></li>
</ul>
</li>
<li>timer hardware abstraction layer<ul>
<li>timer_hal.h</li>
<li><a class="el" href="timer__hal_8c.html" title="timer hardware abstartion layer functions ">timer_hal.c</a> - timer hardware abstraction layer</li>
</ul>
</li>
<li>implementation of some POSIX ctype and string functions<ul>
<li>string.c</li>
<li>string.h</li>
</ul>
</li>
<li>Generic ring buffer support code<ul>
<li><a class="el" href="queue_8c.html" title="Ring buffer code. ">queue.c</a></li>
<li><a class="el" href="queue_8h.html" title="Ring buffer code. ">queue.h</a></li>
</ul>
</li>
</ul>
</li>
<li>network - Simple network server<ul>
<li>displays message sent by <a class="el" href="send_8c.html">send.c</a><ul>
<li><a class="el" href="network_8c.html" title="Network test client This code receives a message and displays iit. ">network.c</a></li>
<li><a class="el" href="network_8h.html">network.h</a></li>
</ul>
</li>
</ul>
</li>
<li>printf My small printf with floating support, misc I/O functions<ul>
<li>Build and test printf<ul>
<li>Makefile</li>
</ul>
</li>
<li>Number I/O function<ul>
<li><a class="el" href="mathio_8c.html" title="String to number conversions with floating point support. ">mathio.c</a></li>
<li><a class="el" href="mathio_8h.html" title="Math IO functions, and verious conversion code with floating point support. ">mathio.h</a></li>
</ul>
</li>
<li>printf function with user defined output function - for strings, files or devices<ul>
<li><a class="el" href="printf_8c.html" title="Small printf, and verious conversion code with floating point support. ">printf.c</a></li>
</ul>
</li>
<li>Simple scanf<ul>
<li><a class="el" href="sscanf_8c.html">sscanf.c</a></li>
</ul>
</li>
<li>Test functions for <a class="el" href="printf_8c.html" title="Small printf, and verious conversion code with floating point support. ">printf.c</a> that can be run under Linux to verify results<ul>
<li><a class="el" href="test__printf_8c.html" title="Test routines for Small printf. ">test_printf.c</a></li>
</ul>
</li>
</ul>
</li>
<li>server - Receive network message and display on ili9341 display<ul>
<li><a class="el" href="server_8c.html" title="Network test client This code receives a message and displays iit. ">server.c</a></li>
<li><a class="el" href="server_8h.html">server.h</a></li>
</ul>
</li>
<li>user - Main user demo task<ul>
<li>Initializes ESP8266 and sets up demo with 4 active windows with independent attributes<ul>
<li><a class="el" href="user__main_8c.html" title="Main user and initialization code This initialize the platform and runs the main user task...">user_main.c</a></li>
</ul>
</li>
</ul>
</li>
<li>vfont - Vector font generator code<ul>
<li>Based on <a href="https://github.com/donbright/font_to_svg">https://github.com/donbright/font_to_svg</a><ul>
<li>LICENSE</li>
<li>README.md</li>
<li>Makefile - build vfont Creates Vector outline fonts saved in ../display/vfonts.h</li>
<li>vfont.cpp - Create C structure of TTF font</li>
<li>vfont.hpp - modified verision of font_to_svg.hpp that outputs C structure data</li>
</ul>
</li>
</ul>
</li>
<li>web - Web server with FAT file system SD CARD support<ul>
<li>Features<ul>
<li><a class="el" href="web_8c.html" title="Small web server for esp8266. ">web.c</a></li>
<li><a class="el" href="web_8h.html" title="Small web server for esp8266. ">web.h</a></li>
</ul>
</li>
<li>Served files can be ANY SIZE!<ul>
<li>CGI files can have an extension of: html,htm,text,txt,cgi</li>
<li>CGI results can be ANY SIZE</li>
</ul>
</li>
<li>Only tokens of the form  token _@ are replaced by the rewrite function<ul>
<li><dl class="section see"><dt>See also</dt><dd><a class="el" href="web_8c.html#abfb5be0ab21dfe56bc934a8965154384" title="Replace CGI token with CGI result CGI tokens have the following syntax @ They start with &quot;@_&quot; and end...">rewrite_cgi_token()</a> in <a class="el" href="web_8c.html" title="Small web server for esp8266. ">web.c</a></dd></dl>
</li>
</ul>
</li>
<li>Uses yield function to continue background tasks while serving requests</li>
<li>Applications<ul>
<li>I created a door sign status display that can be updated via a web page web page running on the esp8266</li>
<li>Copy the file html/msg.cgi to the root folder of a fat32 SD card and modify to suit your needs.</li>
<li>Use: open a web browser to the web server running on the esp8266<ul>
<li>See the Video</li>
<li>For example: <a href="http://192.168.200.116/msg.cgi">http://192.168.200.116/msg.cgi</a></li>
<li>You can update status and return time information on the TFT display by entering information on the page.</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>wire - Wireframe viewer code - uses CORDIC<ul>
<li>Wireframe viewer<ul>
<li><a class="el" href="wire_8c.html" title="wireframe view code ">wire.c</a></li>
<li><a class="el" href="wire_8h.html" title="wireframe view code ">wire.h</a></li>
</ul>
</li>
<li>Cube data<ul>
<li><a class="el" href="cube__data_8h.html" title="Wireframe CUBE data used by wireframe viewer The code handles fixed, proportional and bounding box fo...">cube_data.h</a></li>
</ul>
</li>
<li>Wireframe EARTH data<ul>
<li><a class="el" href="earth__data_8h.html">earth_data.h</a></li>
</ul>
</li>
</ul>
</li>
<li>xpt2046 - touch screen code<ul>
<li>Serial commands: calibrate N<ul>
<li>N = 0 .. 3 for screen rotaion to set and calibrate</li>
<li>uses 5 point calibration method - see <a class="el" href="matrix_8c.html" title="matrix functions ">matrix.c</a></li>
</ul>
</li>
<li>Serial commands: calibrate_test 1<ul>
<li>N = 0 .. 3 for screen rotaion to set and calibrate</li>
<li>uses 5 point calibration method - see <a class="el" href="matrix_8c.html" title="matrix functions ">matrix.c</a></li>
<li>runs calibration demo to show accuracy of calibration</li>
</ul>
</li>
<li>TODO store and read back values</li>
<li><a class="el" href="calibrate_8c.html">calibrate.c</a></li>
<li><a class="el" href="calibrate_8h.html" title="XPT2046 calibration code. ">calibrate.h</a></li>
<li><a class="el" href="xpt2046_8c.html" title="XPT2046 drivers. ">xpt2046.c</a></li>
<li><a class="el" href="xpt2046_8h.html">xpt2046.h</a></li>
</ul>
</li>
<li>yield - Yield code from Arduino yield code<ul>
<li>README.txt</li>
<li>Context switch code<ul>
<li>cont.S</li>
<li><a class="el" href="cont_8h.html">cont.h</a></li>
<li><a class="el" href="cont__util_8c.html">cont_util.c</a></li>
<li><a class="el" href="ets__sys_8h.html">ets_sys.h</a></li>
</ul>
</li>
<li>Main user_init and task replacement with yield support<ul>
<li><a class="el" href="user__task_8c.html">user_task.c</a></li>
<li><a class="el" href="user__task_8h.html">user_task.h</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<dl class="section user"><dt>Connections</dt><dd><pre class="fragment">* ESP8266           
  * MISO/GPIO12 
  * MOSI/GPIO13
  * CLK/GPIO14
  * CHIP_EN ---1K--- VCC3.3V
  * CH_PD   ---1K--- VCC3.3V
  * REST    ---1K--- VCC3.3V   Ground REST to reset ESP8266 and ILI9341
  * GPIO  2 ---1K--- VCC3.3V
  * GPIO  0 ---1K--- VCC3.3V   Ground GPIO 0 to to enable flashing
  * GPIO 15 ---1K--- GND       Need pull down for boot
  * GPIO 14 ---1K--- GND       Keeps floating pins from generating false clocks on attached devices
  * GND ------------ GND
  * T_OUT ------ +            T_OUT is connected to varaible VR100K 
                 | 
    VCC--330K--VR100K-- GND   Variable VR100K is connected to 330K then VCC
                              Max voltage to T_OUT pin is VCC * 100K / (330K+100K)

* FTDI232 USB/TTL      ESP8266 
  * TXD ----1K--------  RXD
  * RXD --------------  TXD
  * RTS ---|&lt;--------- REST    Optional - Diode with Cathode to RTS, Anode to ESP8266 Reset
  * DTR ---|&lt;----1K--- GPIO 00 Optional - Diode with cathode to DTR, Anode to 1K to ESP8266 GPIO00 for flashing
  * GND --------------  GND
  * Note: if you use the optional DTR,RTS conneections you have to use miniterm script provided
    recommend using jumpers to anable this feature if you do not wish to have the ESP8266 reset automatically

* xpt2046        ESP8266
  * MOSI   MOSI  GPIO 13
  * MISO   MISO  GPIO 12
  * SCK    CLK   GPIO 14 
  * CS           GPIO 02

* ILI9341        ESP8266
  * Data/Command GPIO 05 (see io.c and SWAP45 in Makefile - my pin lables are backwards!)
  * CS           GPIO 15 (see io.c)
  * SDI    MOSI  GPIO 13
  * SDO    MISO  GPIO 12
  * SCK    CLK   GPIO 14 
  * RST    REST  RESET
  * VCC          VCC3.3V
  * GND          GND

* MMC/SD reader  ESP8266
  * D3/CS        GPIO 04 (see io.c and SWAP45 in Makefile - my pin lables are backwards!)
  * CMD/DI MOSI  GPIO 13
  * D0     MISO  GPIO 12
  * CLK    CLK   GPIO 14
  * VCC          VCC3.3V
  * GND          GND

* ADF4351        ESP8266
  * LE           GPIO 00 (see io.c)
  * DATA   MOSI  GPIO 13
  * CLK     CLK  GPIO 14
  * MUXOUT            NC
  * CE                NC
  * VCC          VCC3.3V
  * GND          GND
</pre></dd></dl>
<dl class="section user"><dt>Demo Video</dt><dd><ul>
<li>See <a class="el" href="web_8c.html" title="Small web server for esp8266. ">web.c</a> for details.<ul>
<li>I created a door status display that can be updated via a web page web page</li>
<li>I did a status update while recording the video</li>
<li>Result: <a href="https://github.com/magore/esp8266_ili9341/blob/master/video.mp4?raw=true">https://github.com/magore/esp8266_ili9341/blob/master/video.mp4?raw=true</a></li>
</ul>
</li>
</ul>
</dd></dl>
<dl class="section user"><dt>Demo Images</dt><dd><ul>
<li>Running demo and sending a message to the network window</li>
<li>"./send -i 192.168.200.116 -m 'testing\nTest3\nscrolling\ntext\n1\n2'"<ul>
<li>Diagnostics from send ip:192.168.200.116, port:31415, message: testing Test3 scrolling text 1 2 Host name: 192.168.200.116<ul>
<li>Result: <div class="image">
<img src="https://github.com/magore/esp8266_ili9341/blob/master/display.jpg" />
</div>
 </li>
</ul>
</li>
</ul>
</li>
</ul>
</dd></dl>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Wed Jan 31 2018 21:22:17 for ESP8266 ILI9341 display support code with printf sources, wire-frame viewer and custom fonts by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
